jQuery(function(){
	bindShowComment();
	bindAddComment();
	
	bindDeleteCommentButton();
	
	jQuery("textarea.your_comment").focus(function(){
		var $input = jQuery(this);
		var value = $input.val();
		if(value == 'Ý kiến của bạn....')
			$input.val('');
	}).blur(function(){
		var $input = jQuery(this);
		var value = $input.val();
		if(jQuery.trim(value) == '')
			$input.val('Ý kiến của bạn....');
	});
	
});

function bindDeleteEntry(){
	jQuery("a.entryDelete").unbind('click').click(function(){
		var $this = jQuery(this);
		var data = $this.attr("rel");
		data = data.split(";");
		var component = data[0];
		var componentId = parseInt(data[1]);
		var entry = {id: componentId};
		
		csscody.confirm('Bạn vừa thực hiện xóa một nội dung nào đó. Nếu chắc chắn với việc thực hiện này, vui lòng nhấn nút <b>Xác nhận</b> ở dưới!', 
			{
			onComplete: function(r){
				if(r == true){
					GoalEntryManager.deleteGoalEntry(entry, function(rs){
						if(rs == 1){
							location.reload(true);
						}
					});
				}
			}
		});
		return false;
	});
}

function bindDeleteCommentButton(){
	jQuery("a.commentDelete").unbind('click');
	jQuery("a.commentDelete").click(function(){
		var $this = jQuery(this);
		var $commentContainer = $this.parents("div#comment");
		var $settings = $commentContainer.prev(".entrySetting");		
		var $count = $settings.find("label.commentCount");
		
		var commentId = $this.attr("rel");
		
		csscody.confirm('Bạn vừa thực hiện xóa một nội dung nào đó. Nếu chắc chắn với việc thực hiện này, vui lòng nhấn nút <b>Xác nhận</b> ở dưới!', 
			{
			onComplete: function(r){
				if(r == true){
					GoalManager.deleteComment(commentId, function(result){
						if(result != -1){
							$this.parent().next("div.w3").remove();
							$this.parent().remove();
							var count = $count.text();
							count = count.substring(1, count.length-1);
							count = parseInt(count) - 1;
							$count.text('('+count+')');
						}
					});
				}
			}
		});
	});
}

function buildNewCommentHTML(id, avatarURL, ownerName, updatedSince, comment, commentType){
	var html = '<div class="w3"></div><div class="useracc"> <a class="avatar"><img alt="${1}" width="50" height="50" src="${0}"></a>';
    html += '<div class="username"><b style="color:#666;font-weight:normal">Gửi bởi:</b> ${1}</div><a class="commentDelete ${5}" style="float:right;" rel="${2}"></a><div class="updatetime">Vừa mới trả lời.</div>';
    html += '<div class="comment">${4}</div></div>';
    html = html.replace("${0}", avatarURL);
    html = html.replace(/\$\{1\}/g, ownerName);
    html = html.replace("${2}", id);	    
    html = html.replace("${4}", comment);
    html = html.replace("${5}", commentType);
    return html;
}

function bindShowComment(){
	jQuery("a.commentCount").unbind('click').click(function(){
		var $this = jQuery(this);
		var entryId = $this.attr("rel");
		var $commentList = jQuery("div.comment_list[rel="+entryId+"]");
		var $commentBox = jQuery("div.commentbox[rel="+entryId+"]");
		
		if($commentList.css("display") == "none"){
//			$this.addClass("entryCommentSelected");
			$commentList.slideDown();		
			$commentBox.slideDown();
		}else{
//			$this.removeClass("entryCommentSelected");
			$commentList.slideUp();		
			$commentBox.slideUp();
		}		
	
		return false;
	});
}

function blockAddCommentInput(){
	jQuery("input#new_goal_value").iBlock({img: '/images/ajaxloading.gif'});
	jQuery("input[type=button]#add_goal").iBlock({});
}

function unblockAddCommentInput(){
	jQuery("input#new_goal_value").iUnblock();
	jQuery("input[type=button]#add_goal").iUnblock();
}

function bindAddComment(){
	jQuery("div.box").each(function(){
		var $box = jQuery(this);
		var $commentBoxContainer = $box.parents(".commentbox").siblings(".comment_list");		
		var idOfEntry = $box.attr("rel");
		var $submitButton = $box.find("input.commentButton");
		var $input = $box.find("textarea.commentInput").focus(function(){						
			$submitButton.show();
		});
		var _component = $submitButton.attr("rel");
		
		$submitButton.unbind('click').click(function(){
			$submitButton.hide();
			
			var newComment = $input.val();
			if(newComment == null || jQuery.trim(newComment) == ""){
				alert("Hãy nhập ít nhất 1 ký tự");
				$input.focus();
				return;
			}
			var commentDTO = {
					componentId: idOfEntry,
					component: _component,
					comment: newComment
			};
			
			$input.iBlock({img: '/images/ajaxloading.gif'});
			$submitButton.iBlock({});
			
			GoalManager.addComment(commentDTO, function(result){
				if(result != null){
					var html = buildNewCommentHTML(result.id, result.avatarURL, result.ownerName, result.updatedSince, result.comment, _component);
					var $html = jQuery(html);
					$commentBoxContainer.append($html);
					$input.val("Viết trả lời...").css("height","25px");
					bindDeleteCommentButton();
					var $count = jQuery("a."+_component+"Count[rel="+_component+idOfEntry+"] b");
					var count = $count.text();
					count = parseInt(count) + 1;
					$count.text(count);						
					jQuery("div.comment_list[rel="+_component+idOfEntry+"]").show();
				}else{
					alert("Có lỗi phát sinh, vui lòng thử lại sau.");
				}
				$input.iUnblock();
				$submitButton.iUnblock();
			});
		});		
	});	
}

function hideSendButton() {
	jQuery('.commentButton').attr("style", "display:none;");
}

function loadOldComments(component, componentId, componentOwner, lastComment) {
	jQuery.ajax({
		url : ctx+"/ajax/comments.html",
		data: {
			"component": component,
			"componentId": componentId,
			"componentOwner": componentOwner,
			"lastComment": lastComment
		},
		success : function(data) {
			jQuery("#old_comment_" + component + "_" + componentId).hide();
			jQuery(data).insertAfter("#old_comment_" + component + "_" + componentId).slideDown();
			bindDeleteCommentButton();
		}
	});
}
